<file>ui/status/brightness.js</file>
<file>ui/status/camera.js</file>
<file>ui/status/darkMode.js</file>
+ <file>ui/status/doNotDisturb.js</file>
<file>ui/status/dwellClick.js</file>
<file>ui/status/keyboard.js</file>
<file>ui/status/location.js</file>
import * as LocationStatus from './status/location.js';
import * as NightLightStatus from './status/nightLight.js';
import * as DarkModeStatus from './status/darkMode.js';
+import * as DoNotDisturb from './status/doNotDisturb.js';
import * as BacklightStatus from './status/backlight.js';
import * as ThunderboltStatus from './status/thunderbolt.js';
import * as AutoRotateStatus from './status/autoRotate.js';
this._thunderbolt = new ThunderboltStatus.Indicator();
this._nightLight = new NightLightStatus.Indicator();
this._darkMode = new DarkModeStatus.Indicator();
+ this._doNotDisturb = new DoNotDisturb.Indicator();
this._backlight = new BacklightStatus.Indicator();
this._powerProfiles = new PowerProfileStatus.Indicator();
this._rfkill = new RFKillStatus.Indicator();
if (this._network)
this._indicators.add_child(this._network);
this._indicators.add_child(this._darkMode);
+ this._indicators.add_child(this._doNotDisturb);
this._indicators.add_child(this._backlight);
this._indicators.add_child(this._powerProfiles);
if (this._bluetooth)
this._addItemsBefore(this._powerProfiles.quickSettingsItems, sibling);
this._addItemsBefore(this._nightLight.quickSettingsItems, sibling);
this._addItemsBefore(this._darkMode.quickSettingsItems, sibling);
+ this._addItemsBefore(this._doNotDisturb.quickSettingsItems, sibling);
this._addItemsBefore(this._backlight.quickSettingsItems, sibling);
this._addItemsBefore(this._rfkill.quickSettingsItems, sibling);
this._addItemsBefore(this._autoRotate.quickSettingsItems, sibling);
--- /dev/null
+import Gio from 'gi://Gio';
+import GObject from 'gi://GObject';
+
+import {QuickToggle, SystemIndicator} from '../quickSettings.js';
+
+const DoNotDisturbToggle = GObject.registerClass(
+class DoNotDisturbToggle extends QuickToggle {
+ constructor() {
+ super({
+ title: _('Do Not Disturb'),
+ iconName: 'notifications-disabled-symbolic',
+ toggleMode: true,
+ });
+
+ this._settings = new Gio.Settings({
+ schema_id: 'org.gnome.desktop.notifications',
+ });
+ this._settings.bind('show-banners',
+ this, 'checked',
+ Gio.SettingsBindFlags.INVERT_BOOLEAN);
+ }
+});
+
+export const Indicator = GObject.registerClass(
+class Indicator extends SystemIndicator {
+ constructor() {
+ super();
+ this._indicator = this._addIndicator();
+ this._indicator.icon_name = 'notifications-disabled-symbolic';
+
+ const toggle = new DoNotDisturbToggle();
+ toggle.bind_property('checked',
+ this._indicator, 'visible',
+ GObject.BindingFlags.SYNC_CREATE);
+
+ this.quickSettingsItems.push(toggle);
+ }
+});
+
js/ui/status/bluetooth.js
js/ui/status/brightness.js
js/ui/status/darkMode.js
+js/ui/status/doNotDisturb.js
js/ui/status/dwellClick.js
js/ui/status/keyboard.js
js/ui/status/location.js